Imagers, for example CCD, CMOS and others, are widely used in imaging applications, for example, in digital still and video cameras.
It is well known that, for a given optical lens used with a digital still or video camera, the pixels of the pixel array will generally have varying signal values even if the imaged scene is uniform. The varying responsiveness often depends on a pixel's spatial location within the pixel array. One source of such variation is caused by lens shading. Roughly, lens shading causes pixels in a pixel array located farther away from the center of the pixel array to have a lower value when compared to pixels located closer to the center of the pixel array, when the camera is exposed to the same level of light stimulus. Other sources may also contribute to variations in pixel value with spatial location. These variations can be compensated for by adjusting, for example, the gain applied to the pixel values based on spatial location in a pixel array. For lens shading correction, for example, it may happen that the further away a pixel is from the center of the pixel array, the more gain is needed to be applied to the pixel value. Different color channels of an imager may be affected differently by various sources of shading. In addition, sometimes an optical lens is not centered with respect to the optical center of the image sensor; the effect is that lens shading may not be centered at the center of the imager pixel array. Each color channel may also have a different center, i.e., the pixel with the highest response.
Variations in the shape and orientation of photosensors used in the pixels may contribute to a non-uniform spatial response across the pixel array. Further, spatial non-uniformity may be caused by optical crosstalk or other interactions among the pixels in a pixel array. Further, changes in the optical state of a given lens, such as changes in iris opening or focus position, may affect the spatial pattern of non-uniformity among the lenses. Different lenses and/or cameras will generally produce different patterns of non-uniform spatial response from a given pixel array.
Variations in a pixel signal caused by the spatial position of a pixel in a pixel array can be measured and the pixel response value can be corrected with a pixel value gain adjustment. Lens shading, for example, can be corrected using a set of positional gain adjustment values, which adjust pixel values in post-image capture processing. With reference to positional gain adjustment to correct for shading variations with a fixed optical state configuration, gain adjustments across the pixel array can typically be provided as pixel signal correction values, one corresponding to each of the pixels. For color sensors, the set of pixel correction values for the entire pixel array forms a gain adjustment surface for each of a plurality of color channels. The gain adjustment surface is then applied to the pixels of the corresponding color channel during post-image capture processing to correct for variations in pixel value due to the spatial location of the pixels in the pixel array. For monochrome sensors, a single gain adjustment surface is applied to all the pixels of the pixel array.
“Positional gain adjustments” across the pixel array are provided as correction values, one correction value corresponding to each of the pixels and applied to the pixel values during post-image capture processing.
One method of determining spatial pixel correction values is to approximate desired vertical and horizontal correction values for each pixel in a pixel array by using one vertical and one horizontal correction value curve which is determined for the pixels. A vertical correction value curve (Fy(y)) provides a correction value for each row. A horizontal correction value curve (Fx(x)) provides a correction value for each column.
For each color channel, the correction value may be represented in as similar manner as that in co-pending U.S. patent application Ser. No. 10/915,454, entitled CORRECTION OF NON-UNIFORM SENSITIVITY IN AN IMAGE ARRAY, filed on Aug. 11, 2004, (“the '454 application”), and Ser. No. 11/514,307, entitled POSITIONAL GAIN ADJUSTMENT AND SURFACE GENERATION FOR IMAGE PROCESSING, filed on Sep. 1, 2006 (“the '307 application”) which are incorporated herein in their entirety by reference. The correction value may be determined as shown in Equation (1):Fc(x,y)=Fxc(x)+Fyc(y)+kc*Fxc(x)*Fyc(y)+1  (1)where c is the channel, where Fxc(x) is a horizontal correction value curve for that channel, where Fyc(y) is a vertical correction value curve for that channel, and where kc*Fxc(x)*Fyc(y) (the “cross term”) is used to increase/decrease the lens correction values in the pixel array corners. In the '454 application, the value of the vertical correction value curve at a given row is the vertical correction value for that row and is the same for each pixel in the row. Likewise, the value of the horizontal correction value curve at a given column is the horizontal correction value for that column and is the same for each pixel in the column. The total correction is a function of the vertical and horizontal correction, as shown in Equation (1).
One problem with using one vertical and one horizontal correction value curve as above to approximate the desired vertical and horizontal correction values for an entire pixel array is that typically when a particular pixel is located away from the column/row on which the vertical/horizontal correction value curve is centered, the less closely the value calculated in accordance with Equation (1) may model the desired column/row correction values for that particular pixel.
In the '454 application, typically, the single vertical correction value curve for a pixel array corresponds to the correction value curve for a reference center column of the pixel array and, also typically, the single horizontal correction value curve for a pixel array corresponds to the correction value curve for a reference center row of the pixel array. That is, for a given channel, Fxc(x) and Fyc(y) are usually calibrated such that the gain required at the brightest pixel (generally, the center pixel) is equal to one. Thus, assuming the center of color channel c is located at (0, 0), then Fxc(0)=Fyc(0)=0. Thus, generally, at the center row, the correction value is calculated as Fc=Fxc(x)+Fyc(y)+1=Fxc(x)+1 and at the center column, the correction value is calculated as Fc=Fxc(x)+Fyc(y)+1=Fyc(y)+1. (The cross term doesn't appear because along the center row and along the center column the cross term (kc*Fxc(x)*Fyc(y)) is also equal to zero). It follows that Fc(0,0)=1. (Note that multiplying by a correction factor of one has no effect on the pixel value.) This means that Fxc(x) and Fyc(y) are typically calibrated such that Fc (x, y) depicts vertical correction values for pixels along the centermost column of the pixel array and horizontal correction values for pixels along the centermost row of the pixel array with sufficient accuracy. However, a vertical correction value curve that would correct, for example, a column on the right side of the pixel array with sufficient accuracy could be much different than the vertical correction value curve desired for correcting the center reference column. Accordingly, a correction surface based on a single vertical correction value curve may not correct the entire pixel array to a desired accuracy because the vertical correction values determined from the single correction value curve, even if adjusted by the cross term and Fxc(x), will not always yield a correction value that closely maps to desired values on columns positioned relatively far away from the center column, for example, on either side of the pixel array. Analogously, there may be no choice of values for the single horizontal correction value curve provided in the '454 application that will correct the entire pixel array to a desired accuracy.
Accordingly, methods, systems and apparatuses for more accurately representing and calculating desired correction values for the entire pixel array for use in pixel value correction are desired.